package persistence;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import model.Usuario;

public class PersistenceUsuario {
	public static void inserirUsuario(Usuario usuario) {
		Connection con = Conexao.getConexao();
		PreparedStatement ps;
		try {
			String query = "INSERT INTO "
					+ "usuario (login_usuario, email_usuario, senha_usuario, sexo_usuario) "
					+ "VALUES (?,?,?,?)";
			ps = con.prepareStatement(query);
			ps.setString(1, usuario.getLogin());
			ps.setString(2, usuario.getEmail());
			ps.setString(3, usuario.getSenha());
			ps.setString(4, usuario.getSexo());

			int status = ps.executeUpdate();
			System.out.println(status);
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

	public ArrayList<Usuario> getToUsuarios(Usuario usuario) {
		PreparedStatement ps;
		Connection con = Conexao.getConexao();
		ArrayList<Usuario> usuarios = new ArrayList<Usuario>();
		try {
			String query = "SELECT * FROM usuario WHERE login_usuario LIKE ? and email_usuario LIKE ?";
			ps = con.prepareStatement(query);
			ps.setString(1, "%" + usuario.getLogin() + "%");
			ps.setString(2, "%" + usuario.getEmail() + "%");
			System.out.println(usuario.getEmail()+usuario.getLogin()+"--");
			ResultSet rs = ps.executeQuery();
			Usuario usuarioTemp;
			while (rs.next()) {
				usuarioTemp = new Usuario();
				usuarioTemp.setLogin(rs.getString(2));
				usuarioTemp.setEmail(rs.getString(3));
				usuarios.add(usuarioTemp);
				usuarioTemp = null;
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return usuarios;
	}

	public static void deleteUsuario(Usuario usuario) {
		Connection con = Conexao.getConexao();
		PreparedStatement ps;
		String id_usuario = null;
		try {

			System.out.println("pegando Login " + usuario.getLogin());
			String querySelect = "SELECT * FROM usuario WHERE login_usuario = ? ";
			ps = con.prepareStatement(querySelect);
			ps.setString(1, usuario.getLogin());
			ResultSet rs = ps.executeQuery();

			while (rs.next()) {
				id_usuario = rs.getString(1);
			}

			System.out.println("\nid_usuario " + id_usuario);

			String query = "DELETE FROM usuario WHERE id_usuario = "
					+ id_usuario;
			ps = con.prepareStatement(query);

			int status = ps.executeUpdate();
			System.out.println(status);
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

	public Usuario getToLogin(Usuario usuario) {
		PreparedStatement ps;
		Connection con = Conexao.getConexao();
		try {
			String query = "SELECT * FROM usuario WHERE login_usuario = ?  AND senha_usuario = ?";
			ps = con.prepareStatement(query);
			ps.setString(1, usuario.getLogin());
			ps.setString(2, usuario.getSenha());
			ResultSet rs = ps.executeQuery();

			while (rs.next()) {
				usuario.setLogin(rs.getString(2));
				usuario.setEmail(rs.getString(3));
				usuario.setSenha(rs.getString(4));
			}

		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return usuario;
	}
}
